using AiQiuQuan.Sport.Model.Models;
using AiQiuQuan.Sport.Core;

namespace AiQiuQuan.Sport.WebApi.Services
{
    /// <summary>
    /// 平台管理用户表管理
    /// </summary>
    public interface IFrameworkUsersService : ITransientDependency
    {
        /// <summary>
        /// 登录
        /// </summary>
        Task<UnaryResult<FrameworkUsersLoginResultDto>> LoginAsync(FrameworkUsersLoginDto request);

        /// <summary>
        /// 注销登录
        /// </summary>
        Task<UnaryResult> LogOutAsync();

        /// <summary>
        /// 查询
        /// </summary>
        Task<FrameworkUsersDto> GetAsync(Guid id);

        /// <summary>
        /// 查询用户及角色
        /// </summary>
        Task<FrameworkUsersLoginResultDto> QueryAsync();

        /// <summary>
        /// 新增
        /// </summary>
        Task<UnaryResult> AddAsync(FrameworkUsersAddDto model);

        /// <summary>
        /// 修改
        /// </summary>
        Task<UnaryResult> UpdateAsync(FrameworkUsersUpdateDto model);

        /// <summary>
        /// 删除
        /// </summary>
        Task<UnaryResult> DeleteAsync(Guid id);

        /// <summary>
        /// 用户角色列表
        /// </summary>
        /// <param name="userCode">用户CODE</param>
        Task<List<FrameworkUserRoleDto>> GetUserRoleListAsync(string userCode);

        /// <summary>
        /// 我管理的场馆分页列表
        /// </summary>
        Task<PageResult<VenueInfoDto>> GetMyVenuePageListAsync(PageRequest request);
    }
}
